home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 21
/
CU Amiga Magazine's Super CD-ROM 21 (1998)(EMAP Images)(GB)[!][issue 1998-04].iso
/
CUCD
/
Programming
/
RTGMaster
/
devdocs
/
SpriteExamp.lha
/
rtgbobsystem
/
SpriteExample.S
< prev
Wrap
Text File
|
1997-12-25
|
6KB
|
292 lines
;***********************************************************************
;*---------------------------------------------------------------------*
;* RTG BOB-SYSTEM EXAMPLE SOURCE *
;*---------------------------------------------------------------------*
;* Created by Rady Marusa, Ablaze Entertainment Slovakia. *
;* http://www.vadium.sk/ablaze *
;*---------------------------------------------------------------------*
;***********************************************************************
;-----------------------------------------------------------------------
INCLUDE "RTGMASTER/RTGMASTER.I"
INCLUDE "RTGMASTER/RTGSUBLIBS.I"
INCLUDE "RTGMASTER/RTGMASTER_LIB.I"
;------------------------------------------------------------------------
SECTION EXAMPLE,CODE
START MOVE.L SP,OLD_SP
BSR.W RTG_NEW
MOVE.L RTGPTR,A6
MOVE.L RTG_SCR,A0
MOVEQ #8,D0
JSR -$D8(A6) ; OPEN RTGBOB SYSTEM
MOVE.L D0,RTGBOB
BSR.W INIT
.LOOP MOVE.L RTGPTR,A6
MOVE.L RTGBOB,A0
MOVE.L CHUNKY_BUFFER,A1
MOVE.L BACK_BUFFER,A2
MOVEQ #1,D0
JSR -$EA(A6) ; RTG REFRESH BUFFER
MOVE.L RTGPTR,A6
MOVE.L RTGBOB,A0
MOVE.L CHUNKY_BUFFER,A1
MOVE.L #SPRDATA,A2
MOVE.L GOGO,D0
SUB.L #120,D0
MOVEQ #40,D1
MOVE.L #64,D2 ; SPRITE SIZE X
MOVE.L #50,D3 ; SPRITE SIZE Y
JSR -$F0(A6) ; RTG DRAW SPRITE 1
MOVEQ #40,D0
MOVE.L GOGO,D1
SUB.L #120,D1
JSR -$F0(A6) ; RTG DRAW SPRITE 2
MOVE.L GOGO,D0
SUB.L #120,D0
MOVE.L GOGO,D1
SUB.L #120,D1
JSR -$F0(A6) ; RTG DRAW SPRITE 3
ADD.L #1,GOGO ; SPRITE MOVEMENT...
ANDI.L #511,GOGO
JSR CONVERT ; AGA/CGFX TARGET
BTST.B #10,$DFF016
BNE.W .LOOP
BSR.W RTG_OLD
MOVE.L RTGPTR,A6
MOVE.L RTGBOB,A0
JSR -$E4(A6) ; CLOSE RTGBOB SYSTEM
RTS
FAILED BSR.W RTG_OLD
MOVE.L RTGPTR,A6
MOVE.L RTGBOB,A0
JSR -$E4(A6) ; CLOSE RTGBOB SYSTEM
MOVE.L OLD_SP,SP
RTS
INIT MOVE.L #BUF1,CHUNKY_BUFFER ; INIT BOTH BUFFERS
MOVE.L #BUF2,BACK_BUFFER
LEA BGR(PC),A0
MOVE.L CHUNKY_BUFFER(PC),A1
BSR.W COPY
MOVE.L CHUNKY_BUFFER(PC),A0
MOVE.L BACK_BUFFER(PC),A1
BSR.W COPY
BSR.W INITPAL
RTS
INITPAL LEA PALLETE(PC),A0 ; INIT PALLETE
LEA COLORS+4(PC),A1
MOVE.W #767,D0
.LOOP MOVE.B (A0)+,(A1)
ADDQ #4,A1
DBF D0,.LOOP
MOVE.L RTGPTR,A6
MOVE.L RTG_SCR,A0
LEA COLORS,A1
JSR _LVOLoadRGBRtg(A6)
RTS
COPY MOVE.L #5119,D0 ; COPY SCREEN (320x256 PIXELS)
.LOOP MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
MOVE.L (A0)+,(A1)+
DBF D0,.LOOP
RTS
*********************************************************************
RTG_NEW MOVE.L $4,A6 ; INIT RTG STUFF
LEA RTGNAME,A1
MOVEQ #0,D0
JSR -408(A6)
MOVE.L D0,RTGPTR
BEQ.W .ERR3
MOVE.L RTGPTR,A6
LEA SRTAGS,A0
JSR _LVORtgScreenModeReq(A6)
MOVE.L D0,SMODE
BEQ.W FAILED
MOVE.L SMODE,A0
LEA SCTAGS,A1
JSR _LVOOpenRtgScreen(A6)
MOVE.L D0,RTG_SCR
BEQ.W .ERR4
MOVE.L RTG_SCR,A0
LEA TAGS,A1
JSR _LVOGetRtgScreenData(A6)
MOVE.L RTG_SCR,A0
LEA COLORS,A1
JSR _LVOLoadRGBRtg(A6)
MOVE.L RTG_SCR,A0
JSR _LVOLockRtgScreen(A6)
MOVE.L D0,SCREEN
MOVE.L RTG_SCR,A0
MOVEQ #0,D0
JSR _LVOGetBufAdr(A6)
MOVE.L D0,BUFFER1
BEQ.W FAILED
MOVE.L RTG_SCR,A0
MOVEQ #1,D0
JSR _LVOGetBufAdr(A6)
MOVE.L D0,BUFFER2
MOVE.L D0,BUFFERO
BEQ.W FAILED
MOVE.L RTG_SCR,A0
JSR _LVORtgInitRDCMP(A6)
MOVE.L D0,RDCMP
CLR.W _ACTIVE
RTS
.ERR3 MOVEQ #-3,D0
BRA.W FAILED
.ERR4 MOVEQ #-4,D0
BRA.W FAILED
RTG_OLD MOVE.L RTGPTR,A6 ; CLOSE RTG STUFF
MOVE.L RTG_SCR,D7
BEQ.S .EXIT
MOVE.L D7,A0
JSR _LVOUnlockRtgScreen(A6)
MOVE.L RTG_SCR,D0
BEQ.S .EXIT
MOVE.L D0,A0
JSR _LVOCloseRtgScreen(A6)
MOVE.L SMODE,D0
BEQ.S .EXIT
MOVE.L D0,A0
JSR _LVOFreeRtgScreenModeReq(A6)
MOVE.L RTGPTR,D0
BEQ.S .EXIT
MOVE.L D0,A1
MOVE.L $4.w,A6
JSR -414(A6)
.EXIT RTS
CONVERT MOVE.L RTG_SCR,A0
MOVE.L BUFFERO,A1
MOVE.L CHUNKY_BUFFER,A2
MOVEQ #0,D0 ; X DEST OFFSET
MOVEQ #0,D1 ; Y DEST OFFSET
MOVE.L WIDTH,D2 ; WIDTH OF THE CHUNKY-COPY/C2P
MOVE.L HEIGHT,D3 ; HEIGHT OF THE CHUNKY-COPY/C2P
MOVE.L WIDTH,D4 ; SOURCE-WIDTH
MOVE.L HEIGHT,D5 ; SOURCE-HEIGHT
MOVE.L #0,D6 ; SOURCE-X-OFFSET
MOVE.L #0,D7 ; SOURCE-Y-OFFSET
MOVE.L #0,A3 ; NO MASKING (IMPORTANT !!!)
MOVE.L RTGPTR,A6
JSR _LVOCopyRtgBlit(A6) ; DO IT!
MOVEQ #0,D0
MOVE.W _ACTIVE,D0
ADDQ.W #1,D0
MOVE.W D0,_ACTIVE
ANDI.W #1,D0
BNE.S .RTG1
MOVE.L BUFFER2,BUFFERO
BRA.S .CONT
.RTG1 MOVE.L BUFFER1,BUFFERO
.CONT MOVE.L RTGPTR,A6
MOVE.L RTG_SCR,A0
JSR _LVOSwitchScreens(A6)
RTS
RTGNAME DC.B 'rtgmaster.library',0
EVEN
RTGPTR DC.L 0
SMODE DC.L 0
SCREEN DC.L 0
RDCMP DC.L 0
RTG_SCR DC.L 0
COLORS DC.W 256,0
BLK.B 3072,0
DC.L 0,0
BUFFER1 DC.L 0
BUFFER2 DC.L 0
BUFFERO DC.L 0
_ACTIVE DC.W 0,0
CHUNKY_BUFFER DC.L 0
BACK_BUFFER DC.L 0
;-----------------------------------------------------------------------
SRTAGS dc.l smr_MinWidth,320
dc.l smr_MaxWidth,320
dc.l smr_MinHeight,256
dc.l smr_MaxHeight,256
dc.l smr_InitialWidth,320
dc.l smr_InitialHeight,256
dc.l smr_InitialDepth,8
dc.l smr_ChunkySupport,$00000200
dc.l smr_PlanarSupport,$000000c0
dc.l smr_PlanarRoundW,32
dc.l smr_PlanarRoundH,32
dc.l smr_ChunkyRoundW,32
dc.l smr_ChunkyRoundH,32
dc.l smr_Buffers,2
dc.l smr_ForceOpen,0
dc.l 0,0
SCTAGS dc.l rtg_Buffers,2
dc.l rtg_Draggable,-1
dc.l rtg_Interleaved,0
dc.l rtg_PlanarSupport,$000000c0
dc.l rtg_ChunkySupport,$00000200
dc.l 0,0
TAGS dc.l grd_PlaneSize
BPLSIZE dc.l 0
dc.l grd_Width
WIDTH dc.l 0
dc.l grd_Height
HEIGHT dc.l 0
dc.l grd_Depth
DEPTH dc.l 0
dc.l grd_PixelLayout
PIXEL dc.l 0
dc.l 0,0
OLD_SP DC.L 0
RTGBOB DC.L 0
GOGO DC.L 64
PALLETE INCBIN 'BACKGROUND.PAL'
BGR INCBIN 'BACKGROUND.BIN'
SPRDATA INCBIN 'SPRITE.BIN'
;----------------------------------------------------------------------
SECTION BUFFERS,bss_f
BUF1 DS.B 320*256
BUF2 DS.B 320*256